In the current business environment, the use of cloud computing and cloud services has become ubiquitous for many organizations. Cloud computing employs a network of remote servers hosted on the communication network (e.g., Internet) to store, manage, and process data and to deliver hosted services. These services are broadly divided into three categories: Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS), and Software-as-a-Service (SaaS). Cloud computing and storage solutions provide users and enterprises with various capabilities to store and process their data in third-party data centers.
It is often desirable to deploy a project with computing resources sourced from various cloud providers and/or data centers as the products and services offered by each cloud provider have their strengths and limitations. However, each cloud provider has a different approach and requires a different set of skills for provisioning (e.g., defining, making ready for use, setting-up, and so forth), using, and managing respective computing resources. For example, most cloud providers support a template driven provisioning capability which use application program interfaces (APIs) defined by the respective cloud provider to trigger the provisioning. However, while APIs are provided for doing the provisioning activity, they are different for each provider. Further, the format of the templates is different across providers. The default template provided by each of the cloud providers are quite diverse in nature and do not follow any suitable standards or convention. One has to create specific template for each of the providers, thereby requiring expertise on that specific environment. This gets further complicated with multiple heterogeneous cloud providers. On one hand the possibility of human error can be quite high on the other hand reusability of template may become a challenge. Similar to the case of the provisioning, deployment and validation across provider is cumbersome with the existing mechanism since the deployment and the validation are specific to a cloud provider and the scripts for one provider will not be compatible for execution on another provider's platform.
The existing mechanism therefore fails to provide (a) integrated provisioning of application environment and deployment of application across hybrid platforms in terms of automation, registration, execution and verification; and (b) reusable and interoperable artefacts (e.g., templates, scripts, and so forth) and processes provisioning of application environment and deployment of application across hybrid platforms. Accordingly, it is difficult and time consuming to provision, use, and manage computing resources across multiple cloud providers and/or data centers.